#include <stdio.h>
#include <stdlib.h>

/*
 * i>>SHIFT:
 * 		其中SHIFT=5,即i右移5位，2^5=32,相当于i/32，即求出十进制i对应在数组a中的下标。
 * 		比如i=20,通过i>>SHIFT=20>>5=0 可求得i=20的下标为0;
 * i & MASK:
 * 		其中MASK=0x1F，十六进制转化为十进制为31,二进制为0001 1111, i & （0001 1111）相当于保留i的后5位;相当于i%32。
 * i<<(i & MASK):
 * 		相当于把1左移（i&MASK）位。
 *	
 *	使用方法： a.out < data
 *
 *
 * */

#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000


int a[1+N/BITSPERWORD];

//设置所在的bit位为1
void set(int i)
{
	a[i>>SHIFT] |= (1<<(i & MASK));
}
//初始化所在的bit位为0
void clr(int i)
{
	a[i>>SHIFT] &= ~(1<<(i & MASK));
}
//测试所在的bit位是否为1
int test(int i)
{
	return a[i>>SHIFT] & (1<<(i & MASK));
}

int main()
{
	int i;
	for(i=0; i<N; i++)//初始化
	{
		clr(i);
	}
	
	while(scanf("%d", &i) != EOF)
	{
		set(i);
	}
	
	for(i=0; i<N; i++)//输出
	{
		if(test(i))
			printf("%d\n", i);
	}
	return 0;
}


















